#pragma GCC optimize(2)
#include <iostream>
#include <queue>
#include <map>
#include <unordered_map>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
#include <set>
#include <unordered_set>
#include <stack>
#include <bitset>
#define F first
#define S second
#define IOS ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
double n;
double p1,v1,p2,v2;
int check(double x)
{
	//<- ->
	double d1=v1*x;
	double d2=v2*x;
	double ld=p1-0;
	double rd=n-p2;
    double d=p2-p1;
	int f=0;
//	cout<<ld<<' '<<d<<' '<<rd<<' '<<d1<<' '<<d2<<endl;
	if(d2>= 2*rd+d+ld) f=1;
	if(d1>=2*ld+d+rd) f=1;
	if(d1>=ld)
	{
		if(max(0.0,d1-2*ld)+max(0.0,d2-2*rd)>=d && d2>=rd) f=1;
	}
	if(d2>=rd)
	{
		if(max(0.0,d2-2*rd)+d1-2*ld>=d) f=1;
	}
	
	if(d2>=2*(ld+d)+rd) f=1;
	if(d1>=2*(rd+d)+ld) f=1;
	if(d1>=d+rd && d2>=d+ld) f=1;
	if((d1-ld)/2+(d2-rd)/2>=d && d1>=ld && d2>=rd) f=1;
	
	if(d1>=ld)
	{
		if(max(d1-2*ld,0.0)+(d2-rd)/2>=d && d2>=rd) f=1;
	}
	
	if(d2>=rd)
	{
		if(max(d2-2*rd,0.0)+(d1-ld)/2>=d && d1>=ld) f=1;
	}
	
	return f;
}
void solve()
{
	cin>>n;	
	cin>>p1>>v1>>p2>>v2;
	if(p1>p2)
	{
		swap(p1,p2);
		swap(v1,v2);
	}
	ll ans=1e18;
	
	double l=0;
	double r=2*n/max(v1,v2);
//double r=999;
//	cout<<(int)r<<endl;
	while(r-l>=1e-7)
	{
		double mid=(l+r)/2.0;
//		cout<<(int)mid<<endl;
		if(check(mid)) r=mid;
		else l=mid; 
	}
	printf("%.10lf\n",l);
}
int main()
{
	IOS;
	int T=1;
	cin>>T;

	while(T--)
	{
		solve();
	}

	return 0;
}

